/*
 * Code from http://stackoverflow.com/users/2193455/kangear
*/
#ifndef HAVE_STRLCAT

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
 * '_cups_strlcat()' - Safely concatenate two strings.
 */

size_t                  /* O - Length of string */
strlcat(char       *dst,        /* O - Destination string */
        const char *src,            /* I - Source string */
        size_t size)            /* I - Size of destination string buffer */
{
        size_t srclen;      /* Length of source string */
        size_t dstlen;      /* Length of destination string */


        /*
         * Figure out how much room is left...
         */

        dstlen = strlen(dst);
        size   -= dstlen + 1;

        if (!size)
                return (dstlen);  /* No room, return immediately... */

        /*
         * Figure out how much room is needed...
         */

        srclen = strlen(src);

        /*
         * Copy the appropriate amount...
         */

        if (srclen > size)
                srclen = size;

        memcpy(dst + dstlen, src, srclen);
        dst[dstlen + srclen] = '\0';

        return (dstlen + srclen);
}
#endif /* !HAVE_STRLCAT */

#ifndef HAVE_STRLCPY
/*
 * '_cups_strlcpy()' - Safely copy two strings.
 */

size_t                  /* O - Length of string */
strlcpy(char       *dst,        /* O - Destination string */
        const char *src,            /* I - Source string */
        size_t size)            /* I - Size of destination string buffer */
{
        size_t srclen;      /* Length of source string */


        /*
         * Figure out how much room is needed...
         */

        size--;

        srclen = strlen(src);

        /*
         * Copy the appropriate amount...
         */

        if (srclen > size)
                srclen = size;

        memcpy(dst, src, srclen);
        dst[srclen] = '\0';

        return (srclen);
}
#endif /* !HAVE_STRLCPY */
